package com.shs.stack;

/**
 * 栈的实现，先进后出。
 */
public class Stack {
	// 初始化数组
	public String[] stackArr = new String[16];
	// 栈的顶部
	int top = -1;
 
	// 出栈操作
	public String pop() {
		return stackArr[top--];
	}
 
	// 进栈操作
	public void push(String c) {
		// 原数组满了，就扩容1.5倍
		if (isFull()) {
			resize();
		}
		stackArr[++top] = c;
	}
	
	// 清空栈
    public void clear() {     
    	stackArr = null;     
    	top = -1;     
    }   
 
    // 栈的元素个数
    public int length() {     
        return top + 1;     
    }   
	// 判断栈是否为空
	public boolean isEmpty() {
		return top == -1;
	}
 
	// 判断栈是否已满
	public boolean isFull() {
		return top == stackArr.length - 1;
	}
 
	// 取栈顶元素
	public String peek() {
		return stackArr[top];
	}
 
	/**
	 * 数组扩容，1.5倍长度
	 */
	private void resize() {
		String[] temp = new String[stackArr.length * 3 / 2 + 1];
		for (int i = 0; i < stackArr.length; i++) {
			temp[i] = stackArr[i];
		}
		stackArr = temp;
	}
 
	public void print (){
		for (int i = 0; i <= top; i++) {
			 System.out.print(stackArr[i]);
		}
	}
 
}